package modelos
{
	

	public class Utiles
	{
		//--------------------------------------------------------------------------------
		public function Utiles()
		{
		}
		
		//================================================================================
		// TEXTOS
		//================================================================================

		//--------------------------------------------------------------------------------
		public static function StringFormat(texto_con_tags : String, ...parametros : Array) : String
		{
			for (var i:int=0; i<parametros.length; i++)
			{
				texto_con_tags = texto_con_tags.split('{'+i+'}').join(parametros[i]);
			}
			
			return texto_con_tags;
		}

		//================================================================================
		// FUNCTION
		//================================================================================

		//--------------------------------------------------------------------------------
		public static function Assert(cond : Boolean, mensaje : String)
		{
			if (!cond)
				throw new Error(mensaje);
		}

		//--------------------------------------------------------------------------------
		public static function CallbackFijando(f, ...rest) : Function
		{
			return function(... args) { return f.apply(null, rest.concat(args)) }
		}
		
		//--------------------------------------------------------------------------------
		public static function CallbackReemplazando(f, ...rest) : Function
		{
			return CallbackIgnorando(CallbackFijando.apply(null, [f].concat(rest)))
		}

		//--------------------------------------------------------------------------------
		public static function CallbackIgnorando(f, n = 0) : Function
		{
			if (n == 0) return function(... args) { return f() }
			return function(... args) { return f.apply(null, args.slice(n)) }
		}
		
	}
}